#!/bin/bash

echo "=== 测试重定向调试功能 ==="
echo

# 测试基本的重定向功能
echo "1. 测试基本重定向功能..."
if ./compiler < test16.3.c > test16.3_debug.s 2>&1; then
    echo "✓ 重定向功能正常"
    echo "  输入文件: test16.3.c"
    echo "  输出文件: test16.3_debug.s"
    echo "  输出文件大小: $(ls -lh test16.3_debug.s | awk '{print $5}')"
else
    echo "✗ 重定向功能异常"
    exit 1
fi
echo

# 测试GDB重定向调试
echo "2. 测试GDB重定向调试..."
cat > test_redirect.gdb << 'EOF'
set confirm off
set pagination off
break main
set args < test16.3.c > test16.3_gdb.s
run
info breakpoints
quit
EOF

if gdb -batch -x test_redirect.gdb ./compiler 2>/dev/null; then
    echo "✓ GDB重定向调试功能正常"
    if [ -f "test16.3_gdb.s" ]; then
        echo "  生成文件: test16.3_gdb.s"
        echo "  文件大小: $(ls -lh test16.3_gdb.s | awk '{print $5}')"
    fi
else
    echo "✗ GDB重定向调试功能异常"
fi
echo

# 清理测试文件
rm -f test_redirect.gdb test16.3_debug.s test16.3_gdb.s

echo "=== 重定向调试测试完成 ==="
echo
echo "现在您可以："
echo "1. 在VS Code中选择 '调试编译器 (test16.3.c 重定向)' 配置"
echo "2. 设置断点后按 F5 开始调试"
echo "3. 程序会自动执行: ./compiler < test16.3.c > test16.3.s"
echo
echo "或者选择 '调试编译器 (自定义重定向)' 配置"
echo "然后输入您想要的输入文件和输出文件路径"
echo 